#include "gtkpopoverprivate.h"
#include "gtkprivate.h"
#include "gtkroot.h"
+#include "gtknative.h"
#include "gtkseparatormenuitem.h"
#include "gtksettings.h"
#include "gtksnapshot.h"
GtkCssNode *decoration_node;
+ GdkSurface *surface;
GskRenderer *renderer;
GList *foci;
gpointer user_data);
/* GtkRoot */
-static void gtk_window_root_interface_init (GtkRootInterface *iface);
+static void gtk_window_root_interface_init (GtkRootInterface *iface);
+static void gtk_window_native_interface_init (GtkNativeInterface *iface);
static void ensure_state_flag_backdrop (GtkWidget *widget);
static void unset_titlebar (GtkWindow *window);
G_ADD_PRIVATE (GtkWindow)
G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
gtk_window_buildable_interface_init)
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_NATIVE,
+ gtk_window_native_interface_init)
G_IMPLEMENT_INTERFACE (GTK_TYPE_ROOT,
gtk_window_root_interface_init))
return priv->display;
}
+static GdkSurface *
+gtk_window_native_get_surface (GtkNative *native)
+{
+ GtkWindow *self = GTK_WINDOW (native);
+ GtkWindowPrivate *priv = gtk_window_get_instance_private (self);
+
+ return priv->surface;
+}
+
static GskRenderer *
-gtk_window_root_get_renderer (GtkRoot *root)
+gtk_window_native_get_renderer (GtkNative *native)
{
- GtkWindow *self = GTK_WINDOW (root);
+ GtkWindow *self = GTK_WINDOW (native);
GtkWindowPrivate *priv = gtk_window_get_instance_private (self);
return priv->renderer;
}
+static GskRenderer *
+gtk_window_root_get_renderer (GtkRoot *root)
+{
+ return gtk_window_native_get_renderer (GTK_NATIVE (root));
+}
+
static void
-gtk_window_root_get_surface_transform (GtkRoot *root,
- int *x,
- int *y)
+gtk_window_native_get_surface_transform (GtkNative *native,
+ int *x,
+ int *y)
{
- GtkWindow *self = GTK_WINDOW (root);
+ GtkWindow *self = GTK_WINDOW (native);
GtkStyleContext *context;
GtkBorder margin, border, padding;
*y = margin.top + border.top + padding.top;
}
+static void
+gtk_window_root_get_surface_transform (GtkRoot *root,
+ int *x,
+ int *y)
+{
+ gtk_window_native_get_surface_transform (GTK_NATIVE (root), x, y);
+}
+
+static void
+gtk_window_native_check_resize (GtkNative *native)
+{
+ gtk_window_check_resize (GTK_WINDOW (native));
+}
+
static void
gtk_window_root_interface_init (GtkRootInterface *iface)
{
iface->get_surface_transform = gtk_window_root_get_surface_transform;
}
+static void
+gtk_window_native_interface_init (GtkNativeInterface *iface)
+{
+ iface->get_surface = gtk_window_native_get_surface;
+ iface->get_renderer = gtk_window_native_get_renderer;
+ iface->get_surface_transform = gtk_window_native_get_surface_transform;
+ iface->check_resize = gtk_window_native_check_resize;
+}
+
/**
* gtk_window_new:
* @type: type of window
}
}
+ priv->surface = surface;
+
gtk_widget_set_surface (widget, surface);
g_signal_connect_swapped (surface, "notify::state", G_CALLBACK (surface_state_changed), widget);
g_signal_connect_swapped (surface, "size-changed", G_CALLBACK (gtk_window_configure), widget);